console.log("script start");//同步：1,
async function async1(){    
    await async2();//async2同步；
    await async4();//异步：微任务 排队3； 
    console.log("async1 end");//异步：微任务 排队5；
}
async function async2(){
    await async3();//async3同步，await等到了async3的返回； then() 所以下面的代码按道理是可以执行了；
    //但是下面的代码是异步。随意可执行，但是同步还没有结束，需要去微任务的队列排队。
    console.log("async2 end");//异步;  微任务排号1；
}
async function async3(){
    console.log("async3 end");//同步；2， async3执行完成？
}
async function async4(){
    console.log("async4 end");//微任务3 
}
async1();//同步；
setTimeout(() => {
    console.log("settimeout");//异步：宏任务 排号1；
    new Promise((resolve,reject)=>{
        console.log("promise_2_1");
        resolve()
    }).then(()=>{
        console.log("promise_2_2");
    })
}, 1000);
new Promise((resolve)=>{
    console.log("promise");//同步：3
    resolve(2);//promise的状态变成了成功； then（）； 异步；需要去排队。
}).then(()=>{
    console.log("promise1");//异步：微任务 排队2
}).then((date)=>{
    console.log("promise2");//异步：微任务 排队4；
   // console.log(date);
   setTimeout(() => {
    console.log("settimeout2");//异步：宏任务 排队2
   }, 0);
})
console.log("script end ");//同步： 排队4；

//同步的执行完了；
//看微任务的队列：
//宏任务
//先微任务 清空；宏任务一个；
//到底什么时候，让异步代码去队列中排队；；可以执行不代表立马执行；代表着 去队列排队；
// 宏: 21;39
// 微： 10; 34,4,36;5;    26;
 